/**
 * 用户信息储存
 */
class PlayerSelfData {




    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////  土地  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
	/**
	 * @param	_land_info
	 * 
     * id       物品表id 操作时需要上传
	 * plant_id		果实id
	 * max_num	最多产出数量
	 * have_num	已产出
	 * interval	单个产出时间
	 * lasttime	最后收益时间
     * status   不知道是干啥的
	 */
    private static _land_info;
    private static _land_info_length: number;


	/**
	 * 获取土地信息
	 */
    public static landInfo(callback: Function) {
        if (this._land_info) {
            callback && callback(this._land_info);
        } else {
            // 初始化
            this.initSetLandInfo((e) => {
                callback && callback(e);
            })
        }
    }


    // /**
    //  * 设置单个土地已产出数量
    //  * 
    //  * @param id id
    //  */
    // public static setLandInfoHave(id: number, callback: Function) {
    //     for (var i = 0; i < this._land_info_length; i++) {
    //         if (this._land_info[i]['id'] == id) {
    //             this._land_info[i].have_num = this._land_info[i].have_num + 1;
    //             this._land_info[i].lasttime = this._land_info[i].lasttime + this._land_info[i].interval;
    //             callback && callback(this._land_info[i]);
    //             break;
    //         }
    //     }
    // }


    /**
     * 设置单块土地信息
     * 
     * @param key 键
     * @param value 值
     */
    public static setLandInfo(key: number, value: Object) {
        this._land_info[key] = value;
        // EventManager.instance.dispatch(EventName.USER_LAND_CHANGE, this._land_info);
    }


    /**
     * 开垦土地
     * 
     * @param id id
     */
    public static addLand(id: number) {

        this._land_info[this._land_info_length] = {
            "id": id,
            "plant_id": 0
        };
        this._land_info_length = this._land_info_length + 1;
        this._land_info.length = this._land_info_length;
        EventManager.instance.dispatch(EventName.USER_LAND_CHANGE, this._land_info);
    }


	/**
	 * 重新从服务器同步土地信息
	 */
    public static initSetLandInfo(callback: Function) {
        Net.ins.send(['landList'], {}, (e) => {
            this._land_info = e;
            // 刷新lasttime
            this._land_info_length = this._land_info.length;
            for (var i = 0; i < this._land_info.length; i++) {
                this._land_info[i]['id'] = Number(this._land_info[i]['id']);
                this._land_info[i]['max_num'] = Number(this._land_info[i]['max_num']);
                this._land_info[i]['plant_id'] = Number(this._land_info[i]['plant_id']);
                this._land_info[i]['have_num'] = Number(this._land_info[i]['have_num']);
                this._land_info[i]['interval'] = Number(this._land_info[i]['interval']);
                this._land_info[i]['lasttime'] = Number(this._land_info[i]['lasttime']);

                // // 处理已产出数量
                // var have_num = Math.floor((Utils.time() - this._land_info[i]['lasttime']) / this._land_info[i]['interval']);
                // if (have_num > 0) {
                //     this._land_info[i]['lasttime'] = have_num * this._land_info[i]['interval'] + this._land_info[i]['lasttime'];
                //     this._land_info[i]['have_num'] = this._land_info[i]['have_num'] + have_num;
                //     if (this._land_info[i]['have_num'] > this._land_info[i]["max_num"]) {
                //         this._land_info[i]['have_num'] = this._land_info[i]["max_num"];
                //     }
                // }
            }
            callback && callback(this._land_info);
        });
    }


    /**
     * 获取土地数量
     */
    public static get landInfoLength() {
        return this._land_info_length;
    }


    /**
     * 获取单个土地信息
     * 
     * @param key 键
     */
    public static landInfoSolo(key: number) {
        return this._land_info[key];
    }




    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////  金币  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    private static _gold: number = 0;
    /**
     * 获取金币
     */
    public static get gold(): number {
        return this._gold;
    }
    /**
     * 设置金币
     */
    public static set gold(i: number) {
        this._gold = i;
    }





    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////  仓库  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    public static depot = null;





    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////  礼包  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    public static gift = "0";
    public static has_gift = [0];





    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////  运行  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    public static tap_land_id: number = 0;





    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////  友力  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    public static friend_power: number = 0;





    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////  化肥  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    /**
     * manure
     * 
     * @param expire 剩余时间
     * @param number 拥有数量
     * @param today_use 今日已使用次数
     */
    public static manure = [{
        "expire": 0,
        "number": 0,
        "today_use": 0
    }];
    /**
     * 化肥状态
     */
    public static manureStatus:boolean = false;





    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////  自己  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    /**
     * manure
     * 
     * @param expire 剩余时间
     * @param number 拥有数量
     * @param today_use 今日已使用次数
     */
    public static userinfo = [{
        "expire": 0,
        "number": 0,
        "today_use": 0
    }];





    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////  采摘  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    /**
     * manure
     * 
     * @param plant_gain 收获的土地
     */
    public static plant_gain: number = 0;
}
